package com.qidianit.mes.pro.controller;

import com.github.pagehelper.PageInfo;
import com.qidianit.mes.pojo.Result;
import com.qidianit.mes.pojo.qc.CommonDefect;
import com.qidianit.mes.pro.service.CommonDefectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 常见缺陷管理控制器
 */
@RestController
@RequestMapping("/commonDefect") // 接口统一前缀，与缺陷业务对应
public class CommonDefectController {

    @Autowired
    private CommonDefectService commonDefectService;

    /**
     * 分页查询常见缺陷列表（多条件筛选）
     * 请求方式：GET
     * 请求路径：/commonDefect/page
     * 请求参数：commonDefect（筛选条件）、pageNum（默认1）、pageSize（默认10）
     */
    @GetMapping("/page")
    public Result<PageInfo<CommonDefect>> list(
            CommonDefect commonDefect,
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "10") int pageSize) {
        return commonDefectService.selectList(commonDefect, pageNum, pageSize);
    }

    @GetMapping("/get/{id}")
    public Result<CommonDefect> get(@PathVariable Long id){
        return commonDefectService.selectById(id);
    }

    /**
     * 新增常见缺陷
     * 请求方式：POST
     * 请求路径：/commonDefect/add
     * 请求体：JSON格式的缺陷信息（不含ID，自增）
     */
    @PostMapping("/add")
    public Result save(@RequestBody CommonDefect commonDefect) {
        return commonDefectService.save(commonDefect);
    }

    /**
     * 更新常见缺陷信息
     * 请求方式：PUT
     * 请求路径：/commonDefect/update
     * 请求体：JSON格式的缺陷信息（含ID）
     */
    @PutMapping("/update")
    public Result update(@RequestBody CommonDefect commonDefect) {
        return commonDefectService.updateById(commonDefect);
    }

    /**
     * 根据ID删除常见缺陷（逻辑删除）
     * 请求方式：DELETE
     * 请求路径：/commonDefect/delete/{id}（路径参数传递ID）
     */
    @DeleteMapping("/delete/{id}")
    public Result deleteById(@PathVariable Long id) {
        return commonDefectService.deleteById(id);
    }

    /**
     * 批量删除常见缺陷（逻辑删除）
     * 请求方式：DELETE
     * 请求路径：/commonDefect/batchDelete
     * 请求参数：ids（缺陷ID数组，如?ids=1&ids=2）
     */
    @DeleteMapping("/batchDelete")
    public Result batchDelete(Long[] id) {
        return commonDefectService.batchDelete(id);
    }
}
    